#include "myhead.h"
/*
	生产部门：负责生产产品
	销售部门：负责卖东西
*/
int num=1; //保存当前工厂的库存
pthread_mutex_t mymutex;

void *produce(void *arg)
{
	while(1)
	{
		//上锁 
		pthread_mutex_lock(&mymutex);
		num++;
		printf("生产一件，目前库存:%d\n",num);
		sleep(2);
		//解锁
		pthread_mutex_unlock(&mymutex);
		usleep(1000); //延时1ms
	}
}

void *sale(void *arg)
{
	while(1)
	{
		//上锁
		pthread_mutex_lock(&mymutex);
		num--;
		printf("销售一件，目前库存:%d\n",num);
		sleep(2);
		//解锁
		pthread_mutex_unlock(&mymutex);//开锁的一瞬间有两种可能性
		//第一种：由于本身代码就是死循环，开锁之后里面又上锁
		//第二种：开锁以后，生产部门抢到了锁
		usleep(1000); //延时1ms
	}
}
int main()
{
	//定义1把互斥锁并初始化
	
	pthread_mutex_init(&mymutex,NULL);

	//创建两个线程，一个表示生产部门，一个表示销售部门
	pthread_t id1,id2;
	pthread_create(&id1,NULL,produce,NULL);
	pthread_create(&id2,NULL,sale,NULL);
	
	//延时1秒干掉销售部门
	sleep(1);
	pthread_cancel(id2);
	pthread_join(id1,NULL);
	pthread_join(id2,NULL);
	
}